// pages/my/my.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
      list:[],
      avatar:'/images/me.png',
      canChooseAvatar:false
    },
  
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
      this.Yhm()
      this.Xx()
      this.setData({ canChooseAvatar: !!(wx.canIUse && wx.canIUse('button.open-type.chooseAvatar')) })
    },
  reg(){
      wx.navigateTo({
          url: '/pages/reg/reg',
        })
  },
  login(){
      wx.navigateTo({
          url: '/pages/logs/logs',
        })
  },
  onTapSettings(){
      wx.showActionSheet({
          itemList: ['去登录','去注册'],
          success: (res) => {
              const idx = res.tapIndex
              if (idx === 0) {
                  this.login()
              } else if (idx === 1) {
                  this.reg()
              }
          }
      })
  },
  Yhm(cb){
      let token = wx.getStorageSync('token')
      let userid = wx.getStorageSync('userid')
      let username = wx.getStorageSync('username')
      wx.request({
        url: 'http://47.94.6.186:3001/api/user/bindusername',
        method:"GET",
        header:{
          token:token
        },
        data:{
          userid:userid,
          username:username
        },
        success:res=>{
            console.log(res.data);
        },
        complete:()=>{
          if (typeof cb === 'function') cb()
        }
      })
  },
  Xx(){
      wx.request({
        url: 'http://47.94.6.186:3001/api/user/info',
        method:"GET",
        header:{
            token:wx.getStorageSync('token')
        },
        data:{
            userid:wx.getStorageSync('userid')
        },
        success:res=>{
            console.log(res.data.data);
            const list = res.data.data;
            // 处理头像为绝对地址（相对路径补全为服务器完整 URL）
            const rawAvatar = (Array.isArray(list) && list[0] && list[0].avatar) ? list[0].avatar : this.data.avatar
            const avatar = (typeof rawAvatar === 'string' && (rawAvatar.indexOf('http') === 0 || rawAvatar.indexOf('/images/') === 0))
              ? rawAvatar
              : ('http://47.94.6.186:3001' + rawAvatar)
            this.setData({
                list: list,
                avatar
            })
        }
      })
  },
   Sc(){
       wx.request({
         url: 'http://47.94.6.186:3001/api/file/upload',
         method:"POST",
         header:{
             token:wx.getStorageSync('token')
         },
         data:{
         },
         success:res=>{
             console.log(res);
         }
       })
   },
   // 使用微信 chooseAvatar 获取头像并上传绑定
   bindchooseavatar(e){
     const token = wx.getStorageSync('token')
     const userid = wx.getStorageSync('userid')
     if(!token || !userid){
       wx.showModal({
         title:'提示',
         content:'请先登录后再上传头像',
         confirmText:'去登录',
         success:(r)=>{ if(r.confirm) this.login() }
       })
       return
     }
     const tempUrl = e && e.detail && e.detail.avatarUrl
     if(!tempUrl) return
     // 本地预览
     this.setData({ avatar: tempUrl })
     // 上传到服务器：字段名必须为 img，按文档解析 fileUrl
     wx.uploadFile({
       url: 'http://47.94.6.186:3001/api/file/upload',
       filePath: tempUrl,
       name: 'img',
       header: { token },
       success: (uploadRes) => {
         let body = {}
         try{ body = JSON.parse(uploadRes.data) }catch(err){}
         const remoteUrl = body && body.fileUrl
         if(!remoteUrl){
           wx.showToast({ title:'上传失败', icon:'error' })
           return
         }
         const absoluteUrl = remoteUrl.indexOf('http') === 0 ? remoteUrl : ('http://47.94.6.186:3001' + remoteUrl)
         // 绑定头像到用户
         wx.request({
           url:'http://47.94.6.186:3001/api/user/binduseravatar',
           method:'GET',
           header:{ token },
           data:{ userid, avatar: absoluteUrl },
           success:(res)=>{
             if(res.data && res.data.code == 200){
               wx.showToast({ title:'头像已更新', icon:'success' })
               this.setData({ avatar: absoluteUrl })
               this.Xx()
             }else{
               wx.showToast({ title:'绑定失败', icon:'error' })
             }
           },
           fail:()=> wx.showToast({ title:'绑定异常', icon:'error' })
         })
       },
       fail:()=> wx.showToast({ title:'上传异常', icon:'error' })
     })
   },
   // 兜底：基础库不支持 chooseAvatar 时，点击头像选择并上传
   onTapAvatar(){
     if (this.data.canChooseAvatar) return;
     const token = wx.getStorageSync('token')
     const userid = wx.getStorageSync('userid')
     if(!token || !userid){
       wx.showModal({
         title:'提示',
         content:'请先登录后再上传头像',
         confirmText:'去登录',
         success:(r)=>{ if(r.confirm) this.login() }
       })
       return
     }
     wx.chooseImage({
       count: 1,
       sizeType: ['compressed'],
       sourceType: ['album','camera'],
       success: res => {
         const filePath = (res.tempFilePaths && res.tempFilePaths[0]) || (res.tempFiles && res.tempFiles[0]?.path)
         if(!filePath) return
         this.setData({ avatar: filePath })
         wx.uploadFile({
           url: 'http://47.94.6.186:3001/api/file/upload',
           filePath,
           name: 'img',
           header: { token },
           success: (uploadRes) => {
             let body = {}
             try{ body = JSON.parse(uploadRes.data) }catch(err){}
             const remoteUrl = body && body.fileUrl
             if(!remoteUrl){
               wx.showToast({ title:'上传失败', icon:'error' })
               return
             }
             const absoluteUrl = remoteUrl.indexOf('http') === 0 ? remoteUrl : ('http://47.94.6.186:3001' + remoteUrl)
             wx.request({
               url:'http://47.94.6.186:3001/api/user/binduseravatar',
               method:'GET',
               header:{ token },
               data:{ userid, avatar: absoluteUrl },
               success:(res2)=>{
                 if(res2.data && res2.data.code == 200){
                   wx.showToast({ title:'头像已更新', icon:'success' })
                   this.setData({ avatar: absoluteUrl })
                   this.Xx()
                 }else{
                   wx.showToast({ title:'绑定失败', icon:'error' })
                 }
               },
               fail:()=> wx.showToast({ title:'绑定异常', icon:'error' })
             })
           },
           fail:()=> wx.showToast({ title:'上传异常', icon:'error' })
         })
       }
     })
   },
    /**
     * 生命周期函数--监听页面初次渲染完成
     * 
     */
    onReady() {
  
    },
  
    /**
     * 生命周期函数--监听页面显示
     */
  onShow() {
    this.Yhm(()=> this.Xx())
  },
  
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
  
    },
  
    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {
  
    },
  
    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {
  
    },
  
    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {
  
    },
  
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {
  
    }
  })